##########################################################################
#File Name:logzip.sh
#Author:hongxing
#/Desc:DBSß日志压缩备份
##########################################################################

#!/bin/sh
set -e

if [ -f "config.mk" ]; then
    . config.mk
fi

LOCKET_DIR=INSTALL_DIR

#dbs 同步进程日志目录目录
DBS_DATASYNC_LOG_DIR=$LOCKET_DIR/dbs/var/log/archive/datasync 
#dbs sqlrelay插件日志目录
DBS_SQLRELAY_LOG_DIR=$LOCKET_DIR/dbs/var/log/archive/sqlrelay 
#sqlrelay本身日志目录
SQLR_LOG_DIR=$LOCKET_DIR/var/log/sqlrelay/debug

#压缩日志备份目录
ZIP_DST_DIR=./backup

# 压缩日志
# 参数 $1 日志源目录
# 参数 $2 压缩归档目录
# 参数 $3 日志文件前缀
# 参数 $4 压缩脚本执行时前N天的日志
zip_dbs_logs () {
	src_log=""
	date_to_start=`date "+%Y%m%d" -d "$4 day ago"` 
	date_to_end=`date "+%Y%m%d" -d "1 day ago"`

	#压缩前N天的日志
	if [ $4 -gt 1 ]; then
		for ((i=1; i<=$4; i ++))	
		do 
			src_log+=$(printf '%s-%s.[0-9][0-9].log  ' $3 `date "+%Y%m%d" -d "$i day ago"`)
		done

		zip_name=$(printf '%s_%s-%s.log.tar.gz' $3 $date_to_start $date_to_end)
	#压缩前1天的日志
	else
		src_log=$3-${date_to_end}.[0-9][0-9].log
		zip_name=$(printf '%s_%s.log.tar.gz' $3 $date_to_end)
	fi
	
	cd $1/
	tar czvf $2/$zip_name $src_log
	rm -f $src_log
	cd - 1>/dev/null 2>&1
}

# 删除备份日志
# 参数 $1 日志目录
# 参数 $2 日志前缀
# 参数 $3 删除
# 参数
del_zip_logs () {
	cd $1/
	find -name "${2}_*.log.tar.gz" -mtime +$3 -exec rm -f {} \;
	cd - 1>/dev/null 2>&1
}

usage () {
	echo "Usage: $0 zip_dir n [m]"
	echo "zipdir: directory for zip logs"
	echo "n: zip log file in days when $0 exec (every n days to exec $0)"
	echo "m: delete ziped log in zip_dir m days ago (optional)"
	echo "using 'cron' set scipt timing to exec"
	exit 1
}



if [ $# -lt 3 ] 
then
	usage
fi

ZIP_DST_DIR=$1

[ -d $ZIP_DST_DIR ] || mkdir $ZIP_DST_DIR

zip_dbs_logs  $DBS_DATASYNC_LOG_DIR  $ZIP_DST_DIR  datasync  $2

zip_dbs_logs  $DBS_SQLRELAY_LOG_DIR  $ZIP_DST_DIR  sqlrelay  $2

if [ $# -eq 4 ]
then
del_zip_logs $ZIP_DST_DIR datasync $3
del_zip_logs $ZIP_DST_DIR sqlrelay $3
fi

